package com.example.writting.ui.templates

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.RadioButton
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.writting.databinding.FragmentTemplatesBinding
import com.google.android.flexbox.FlexboxLayout

class TemplatesFragment : Fragment() {

    private var _binding: FragmentTemplatesBinding? = null
    private val binding get() = _binding!!

    private val topics = listOf("社会民生类", "政府建设类", "科技创新类", "新生事物类", "政府建设类", "乡村振兴类", "青年人才类", "行政执法类", "经济发展类", "文化建设类", "万能")

    private val templates = mapOf(
        "万能" to mapOf(
            "开头" to listOf(
                "当前我国进入改革攻坚期、发展关键词，社会问题复杂、多元，社会矛盾易发、多发。",
                "当前，我国发展仍处于重要战略机遇期，前景十分光明，挑战也十分严峻。"
            ),
            "结尾" to listOf(
                "发展如逆水行舟，不进则退。必须{毫不动摇以经济建设为中心}推动{科学发展}，妥善应对挑战，使中国{经济}这艘巨轮破浪远航。"
            ),
            "呼吁式结尾" to listOf(
                "蓝图绘就，正当扬帆破浪；重任在肩，更须策马扬鞭。我们有理由坚信，只有{二级目标}，在抢抓机遇中乘势而上，在与时俱进中推陈出新，定能战胜前进道路上的风险挑战，在新征程上实现{一级目标}。"
            ),
            "分析形势式结尾" to listOf(
                "我们现在所处的，是一个船到中流浪更急、人到半山路更陡的时候，是一个愈进愈难、愈进愈险而又不进则退、非进不可的时候。越是这种时候，越需要我们警惕{替换}风险，做好{分论点1+分论点2+分论点3}，实现{中心论点的好影响}，继续创造出新时代的伟大奇迹。"
            ),
            "实干式结尾" to listOf(
                "路虽远，行则将至；事虽难，做则必成。只有干出来的精彩，没有等出来的辉煌；只有一步一步干在实处，才能昂首阔步走在前列。站在新的起点上，我们必须把{二级目标}放在更加突出的位置，在{分论点1}上动真格，在{分论点2}上下工夫，在{分论点3}上讲实效，以实干笃行谱写{一级目标}的绚丽篇章。"
            ),
            "措施" to listOf(
                "定向施策，聚焦靶心，精准发力。"
            )
        ),
        "文化建设类" to mapOf(
            "措施" to listOf(
                "不忘本来、吸收外来、面向未来，更好构筑中国精神、中国价值、中国力量，为人民提供精神指引。"
            ),
            "开头" to listOf(
                "一个民族的复兴，首先是文化的觉醒。中华文化积淀着中华民族最深沉的精神追求，是中华民族生生不息、发展壮大的丰厚滋养。新时代的文化传承，不仅是精湛工艺、匠人精神的延续，更是{中心论点}的发扬.而新时代的创新，除了技术水平、经营理念的提升，更是{中心论点}的转变。"
            ),
            "结尾" to listOf(
                "习近平总书记说过，\"不忘本来才能开辟未来，善于继承才能更好创新。\"{中心论点}作为文化领域的活跃分子，担当着文化复兴的重任，是推动传统与现代交融的中坚力量。我们也有理由坚信，只有不断地在中华优秀传统文化中汲取营养，在与时俱进中进行推陈创新，{中心论点}必将澎湃不息，引领未来。"
            )
        ),
        "乡村振兴类" to mapOf(
            "开头" to listOf(
                "党的二十大报告中指出，全面建设社会主义现代化国家，最艰巨最繁重的任务依然在农村。在打赢脱贫攻坚战、全面建成小康社会的新时代背景下，推动{中心论点}建设是筑基之举、现实之需、发展之要。{中心论点}是乡村振兴的重要基础，是解决农村一切问题的前提。发展{中心论点}，有利于实现农民就地就近就业增收{效果1}，有利于激发农业农村的生机活力{效果2}，更有利于推进农业农村现代化{效果3}。"
            ),
            "结尾" to listOf(
                "民族要复兴，乡村必振兴。实现中华民族伟大复兴，最艰巨最繁重的任务仍然在农村，最广泛最深厚的基础也在农村。我们必须以更大的决心、更明确的目标、更有力的举措，全面推动中心论点落地生根、开花结果，谱写\"产业兴旺、生态宜居、生活富裕\"的乡村振兴新画卷。"
            )
        ),            
        "新生事物类" to mapOf(
            "开头" to listOf(
                "历史的潮流奔涌向前，时代的变化日新月异。如今，{现象1、2、3}深刻改变着人类的生产生活方式，极大激发了{社会活力}，但与此同时，一些问题也逐渐凸显出来：从{问题1}到{问题2}，从{问题3}到{问题4}……究其原因，新兴技术尚不成熟、行业缺乏必要监管等，值得我们高度重视。我们需要{中心论点}，进一步做到顶层设计和分类指引，加强形势研判，才能在变革中抓住机遇、赢得主动。（适用于人工智能、无人驾驶、直播带货等亟需规范化的新兴领域）"
            ),
            "结尾" to listOf(
                "新时代孕育新机遇，新机遇开启新起点，站在新时代的历史节点上，我们面临着前所未有的机遇，也面临着不可预估的挑战。故而我们要把握时代发展的脉搏，以深入的思考、全新的理念、完善的制度，引领工作迈上新台阶。（用于新时代发展机遇方面的话题）"
            )
        ),
        "经济发展类" to mapOf(
            "开头" to listOf(
                "能变则全，不变则亡；全变则强，小变仍亡。当前，百年未有之大变局正加速演进，世界之变、时代之变、历史之变以前所未有的方式展开。无论是科技的迅猛更迭、电子商务的蓬勃兴起，还是消费升级的浪潮涌动，抑或是我国国情与国际格局的深刻革新，这些新局面都对{中心论点}带来了深远影响。唯有巧借变革之力，立足实际发展，让{中心论点}同样顺势而为、因势而变，方能在变局中开新局、于危机中育新机。"
            ),
            "结尾" to listOf(
                "发展如逆水行舟，不进则退。必须{毫不动摇以经济建设为中心}推动{科学发展}，妥善应对挑战，使中国{经济}这艘巨轮破浪远航。",
                "风正时济，自当破浪前行；任重道远，更需快马加鞭。推进{中心论点}建设是一项系统工程，必须牵住改革创新的\"牛鼻子\"，紧扣新质生产力的内涵要求，以{分论点1}铺陈底色，以{分论点2}点染亮色，以{分论点3}厚植成色，在笃定前行中不断绘就中国式现代化的壮美画卷。(经济、发展均可用)"
            ),
            "措施" to listOf(
                "既做减法，又做加法，减少无效和低端供给，扩大有效和中高端供给。"
            )
        ),
        "科技创新类" to mapOf(
            "开头" to listOf(
                "{领导人讲话/二十大报告}。当今世界，科技进步日新月异，互联网、云计算、人工智能等现代信息技术深刻改变着人类的生产方式、学习方式和生活方式。推进{数字化转型}是贯彻落实{具体战略}的重要先手棋。面对信息技术快速迭代带来的挑战，我们需要聚焦{中心论点}，让{效果}的图景照进现实。传递创新的脉动。"
            ),
            "结尾" to listOf(
                "{分析当前形势}，我们在期望国家、政府和社会有所行动时，自己更应该躬身入局。一方面，继续{行动}；另一方面，做到{效果}。作为新时代的青年人，我们肩负着实现国家富强、民族复兴、人民幸福的时代重任，要从思想上、能力上、行动上跟上时代发展，勇于向未知领域探索，谋新求变，勇做走在时代前列的奋斗者、开拓者、奉献者。（从小我出发，自己作为年轻的准公职人员应该承担什么角色，再大到整个社会、国家）"
            )
        ),
        "社会民生类" to mapOf(
            "开头" to listOf(
                "\"治国有常，利民为本\"。让人民群众过上好日子是我们党带领人民进行革命、建设、改革的根本目的。当前我国经济社会高质量发展，人民生活换挡升级，这也为我们做好{工作, 中心论点}提出了更高要求，这些都迫切需要我们做好{工作}，用{工作成果}回应人民群众新要求、新期待，让发展成果更多更公平地惠及全体人民。（涉及人民群众利益的均可用）"
            ),
            "结尾" to listOf(
                "民为邦本，本固邦宁。正如{影响}所见，建设{工作, 中心论点}久久为功，面对发展新领域、就业新趋势、生活新需求，只有更加注重从粗放式到精细化，从量的积累到质的提升，才能既做专做精，又做实做好，不断将人民群众对美好生活的向往变为现实，谱写新时代中国特色社会主义更加绚丽的华章。",
                "学有所教、劳有所得、病有所医、老有所养、住有所居，具体而微的生活期待构成了百姓梦想的真实图景，交汇成国家梦想的缤纷亮色。保障和改善民生是一项长期工程，没有终点站，只有连续不断的新起点。只有更加注重从粗放式到精细化，从量的积累到质的提升，才能不断将人民群众对美好生活的向往变为现实，谱写新时代中国特色社会主义更加绚丽的华章。"
            ),
            "措施" to listOf(
                "定向施策，聚焦靶心，精准发力。"
            )
        ),
        "政府建设类" to mapOf(
            "措施" to listOf(
                "以猛药去疴、重典治乱的决心，以刮骨疗毒、壮士断腕的勇气，坚决打好党风廉政建设和反腐败斗争这场硬仗。"
            ),
            "开头" to listOf(
                "从{成就1}到{成就2}，从{成就3}到{成就4}……在推进社会主义现代化的生动实践中，当代共产党人以直抵民心的温度、托底民生的力度，书写了一个个最生动、最真实的中国故事。当下，{某项社会建设}步伐正在不断加快，进入新时代，实现新目标，各地政府使命在肩，责任重大，唯有勤勉尽责、夙兴夜寐，才能不负重托、不辱使命。（适用于执政为民、法治政府建设、服务型政府建设等话题）"
            ),
            "结尾" to listOf(
                "\"政贵有恒，治须有常\"。面对新时代{中心论点）的机遇与挑战，{服务型政府}的建设必须跟上，各级行政机关必须走到群众中去，俯下身子听民愿，放下架子解民忧，甩开膀子干实事，在\"抓长\"和\"抓常\"中下真功夫、苦功夫，保持久久为功、利在长远的耐心和毅力，不断通过{措施}化解难题，开创工作新局面。"
            )
        ),
        "青年人才类" to mapOf(
            "措施" to listOf(
                "要加强道德修养，带头弘扬社会主义核心价值观，明辨是否善恶，追求健康情趣，不断向廉洁自律的高标准看齐，做到心有所戒、行有所止，守住底线、不碰高压线。",
                "提高精准理解、精准发力、精准落实能力，克服和防止\"马大哈\"的态度、\"差不多\"的标准、\"过得去\"的作风。"
            ),
            "学习" to listOf(
                "要自觉学习党章、遵守党章、贯彻党章、维护党章，自觉加强党性修养，自觉坚定理想信念，自觉树立群众观点，自觉弘扬优良作风。",
                "既要抓住学习重点，也要注意拓展学习领域，既要向书本学习，也要向实践学习，既要向人民群众学习，也要向专家学者学习，向国内国外有益经验学习。",
                "透过\"进\"的人看差距，透过\"退\"的人看担当，透过\"留\"的人看使命，透过\"转\"的人看境界。"
            ),
            "选拔" to listOf(
                "评定人才要区分主次，由岗选才；培养人才要多管齐下，因材施教；使用人才要整合聚力，因材适岗。"
            ),
            "人才类开头" to listOf(
                "国家发展靠人才，民族振兴靠人才。我们必须增强忧患意识，更加重视人才自主培养，加快建立人才资源竞争优势。习总书记的这句话，一针见血地点出了人才工作的重要性。当前，人才短缺、，人口空心化已成为{材料背景}的主要难题。人才匮乏，一直是影响和制约发展的一大瓶颈，要构建{分论点1}+{分论点2}+{分论点3}的人才多轮驱动模式。"
            ),
            "人才类结尾" to listOf(
                "峻极之山，非一石所成；凌云之榭，非一木所构。当前，我们比历史上任何时期都更接近中华民族伟大复兴的宏伟目标，也比历史上任何时期都更渴望人才。只有尊重人才成长规律、重视人才自主培养、用好人才激励手段{分论点}，才能为高质量发展提供源源不断的人才支撑。"
            ),
            "青年类结尾" to listOf(
                "青年干部是伟大时代的见证者、参与者、奋斗者，是党和国家事业发展的生力军。温室里长不出经得起风吹雨打的劲松，我们要怀抱梦想又脚踏实地，敢想敢为又善作善成，高扬\"不破楼兰终不还\"的精神、\"狭路相逢勇者胜\"的斗志、\"千磨万击还坚劲\"的韧劲，书写无愧前人、无愧时代、无愧人民的青春之歌。"
            )
        ),
        "行政执法类" to mapOf(
            "措施" to listOf(
                "敢于涉险滩、动奶酪，敢于破难题、闯难关，敢于趟路子、辟新径。",
                "既扭住问题又科学分析，既正视矛盾又指明出路，既指明难题又绘出前景，既坦言困惑又鼓励奋进。",
                "在贯彻执行上级决策部署上决不能打折扣、搞变通、做选择，决不能搞上有政策、下有对策，决不能有令不行、有禁不止。",
                "在战略部署上\"扣扣子\"，在责任履行上\"担担子\"，在任务落实上\"钉钉子\"。",
                "坚持把政治纪律作为第一要求，就是要始终心无旁骛，坚持把干好工作作为第一要务，就是要走出利益藩篱，坚持把大局需要作为第一选择，就是要聚力攻坚破难。",
                "把准\"脉\"，才能开好\"方\"；找准\"靶\"，才能射好\"箭\"。",
                "把准\"脉\"，点准\"穴\"，下准\"药\"，治准\"病\"。"
            ),
            "创新" to listOf(
                "在新的形势下，加强和改进群众工作，必须从更新理念、完善政策、健全机制、创新方法入手，不断创新社会治理方式，着力提升预防和化解社会矛盾的水平。",
                "不论如何创新，都必须紧紧抓住做好群众工作这条主线，紧紧依靠基层组织和广大群众，做到干群结合。"
            ),
            "开头" to listOf(
                "行政执法的质量和效能历来都是法治政府建设各环节的重中之重。作为一头连着各级政府、一头连着群众切身利益的关键环节，每一次执法都关乎人民群众对党和政府的信任，关乎对我国法治建设的信心。这些年，随着我国深化行政执法体制改革，强化行政执法监督机制和能力建设等方面工作的推进，行政执法的质量和效能已有较大改善。但在{遇到的问题，如执法尺度、执法水平和人民群众满意度}等方面，还有优化提升的空间。"
            ),
            "结尾" to listOf(
                "法，国之权衡也，时之准绳也。今天的{法治建设}\"船到中流浪更急\"，前方还有不少硬骨头要啃，还有不少硬仗要打。我们必须咬定青山不放松，汇聚磅礴的法治力量，埋头真抓实干，迈出坚定的法治步伐，努力为全面建设社会主义现代化国家、实现中华民族伟大复兴的中国梦提供有力法治保障。"
            )
        )
    )

    private lateinit var adapter: TemplatesAdapter

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentTemplatesBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        setupRecyclerView()
        setupSpinner()
    }

    private fun setupRecyclerView() {
        adapter = TemplatesAdapter()
        binding.templatesList.layoutManager = LinearLayoutManager(requireContext())
        binding.templatesList.adapter = adapter
    }

    private fun setupSpinner() {
        val spinnerAdapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, topics)
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        binding.topicSpinner.adapter = spinnerAdapter

        binding.topicSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                val selectedTopic = topics[position]
                updatePositionRadioGroup(selectedTopic)
            }

            override fun onNothingSelected(parent: AdapterView<*>?) {
                binding.positionRadioGroup.visibility = View.GONE
                adapter.updateItems(emptyList())
            }
        }
    }

    private fun updatePositionRadioGroup(topic: String) {
        binding.positionRadioGroup.removeAllViews()
        val positions = templates[topic]?.keys?.toList() ?: emptyList()
        
        if (positions.isEmpty()) {
            binding.positionScrollView.visibility = View.GONE
            adapter.updateItems(emptyList())
            return
        }

        binding.positionScrollView.visibility = View.VISIBLE
        positions.forEach { position ->
            val radioButton = RadioButton(requireContext()).apply {
                text = position
                id = View.generateViewId()
                layoutParams = FlexboxLayout.LayoutParams(
                    FlexboxLayout.LayoutParams.WRAP_CONTENT,
                    FlexboxLayout.LayoutParams.WRAP_CONTENT
                ).apply {
                    setMargins(8, 8, 8, 8)
                }
                setOnCheckedChangeListener { _, isChecked ->
                    if (isChecked) {
                        updateTemplates(topic, position)
                    }
                }
            }
            binding.positionRadioGroup.addView(radioButton)
        }
        
        // 默认选中第一个
        (binding.positionRadioGroup.getChildAt(0) as? RadioButton)?.isChecked = true
    }

    private fun updateTemplates(topic: String, position: String) {
        val templatesList = templates[topic]?.get(position) ?: emptyList()
        adapter.updateItems(templatesList)
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
} 